﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace System
{
    /// <summary>
    /// EventArgs générique
    /// </summary>
    /// <typeparam name="T">Type de la donnée contenue</typeparam>
    public class EventArgs<T> : EventArgs
    {
        /// <summary>
        /// Crée une nouvelle instance de la classe <see cref="EventArgs"/>
        /// </summary>
        /// <param name="value">Donnée de l'évènement</param>
        public EventArgs(T value)
            : base()
        {
            this.Value = value;
        }

        /// <summary>
        /// Donnée de l'évènement
        /// </summary>
        public T Value { get; private set; }
    }

    /// <summary>
    /// EventArgs générique
    /// </summary>
    /// <typeparam name="T1">Type de la première donnée contenue</typeparam>
    /// <typeparam name="T2">Type de la deuxième donnée contenue</typeparam>
    public class EventArgs<T1, T2> : EventArgs<T1>
    {
        /// <summary>
        /// Crée une nouvelle instance de la classe <see cref="EventArgs"/>
        /// </summary>
        /// <param name="value">Première donnée</param>
        /// <param name="value2">Deuxième donnée</param>
        public EventArgs(T1 value, T2 value2)
            : base(value)
        {
            this.Value2 = value2;
        }

        /// <summary>
        /// Donnée de l'évènement
        /// </summary>
        public T2 Value2 { get; private set; }
    }
}
